/**
 * @fileOverview
 * @exports Proxy as org.puremvc.js.patterns.proxy.Proxy
 * @imports org.puremvc.js.adapters.NotifierAdapter
 */


/**
 * @param {string} [proxyName]
 * @param {Object} [data]
 * @constructor
 * @extends {Notifier}
 */
function Proxy (proxyName, data)
{
	this.proxyName= proxyName || this.constructor.NAME;
	if (data)
	{
		this.setData(data);
	}
};


Proxy.prototype= new NotifierAdapter;
Proxy.prototype.constructor=Proxy;

/**
 * @static
 * @const
 * @type {string}
 */
Proxy.NAME= 'Proxy';

/**
 * @return {string}
 */
Proxy.prototype.getProxyName= function ()
{
	// TODO confirm with Cliff that the implementation allows for null values instead of strings as names
	return this.proxyName;
};

/**
 * @param {*} data
 * @return {void}
 */
Proxy.prototype.setData= function (data)
{
	this.data= data;
};

/**
 * @return {Object}
 */
Proxy.prototype.getData= function ()
{
	return this.data;
};

/**
 * @return {void}
 */
Proxy.prototype.onRegister= function () {};

/**
 * @return {void}
 */
Proxy.prototype.onRemove= function () {};

/**
 * @protected
 * @type {string}
 */
Proxy.prototype.proxyName;

/**
 * @protected
 * @type {Object}
 */
Proxy.prototype.data= null;


